// class Node{
//     constructor(element){
//         this.element=element
//         this.next=null
//     }
// }
// class CircleList{
//     constructor(){
//         this.head=null
//         this.count=0
//     }
//     //获取最后一个元素
//     getItem(index){
//         let current=this.head
//         for(var i=0;i<index;i++){
//             current=current.next
//         }
//         return current
//     }

//     //在末尾添加
//     push(element){
//         let node=new Node(element)
//         if(this.head==null){
//             // console.log(1)
//             this.head=node
//             node.next=this.head
//         }else{
//             // console.log(2)
//             let last=this.getItem(this.count-1)
//             last.next=node
//             node.next=this.head
//         }
//         this.count++
//     }
//     ysfCircle(n,k){
//         for(var i=1;i<=n;i++){
//             this.push(i)
//         }
        
//         let helper=this.head
//         let current=this.head
//         while(helper.next!=this.head){
//             helper=helper.next
//         }
//         // console.log(helper)
//         while(this.count>15){
//             for(var i=1;i<k;i++){
//                 // console.log(i)
//                 helper=helper.next
//                 current=current.next
//             }
//              console.log('aaa',current.element)
//             helper.next=helper.next
//             current=current.next
//             this.count--
//         }
//     }
// }
// let a=new CircleList()
//  a.ysfCircle(30,9)
// // a.push(1)
// // a.push(2)
// // a.push(3)
// // a.push(4)
// // a.push(5)
// // a.push(6)
// // a.push(7)

// console.log(a)
class Node{
    constructor(element){
        this.element=element
        this.perv=null
        this.next=null
    }

}
class CircleList{
    constructor(){
        this.head=null;
        this.tail=null;
        this.count=0;
    }
    //尾部添加
    push(element){
        let node = new Node(element)
        //先判断四不是null
        if(this.head==null){
            this.head=node
            this.tail=node
            node.next=this.head
            node.perv=this.tail
        }else{
            //获取最后一个
            let last=this.tail
            //最后一个的next指向node
            last.next=node
            //node的指向head
            node.next=this.head
            //node的perv指向最后一个
            node.perv=last
            //把最后一个改成node
            this.tail=node
            //把第一个的prev改成最后一个
            this.head.perv=this.tail
        }
        this.count++
    }
    ysfCircle(n,k){
        for(var i=1;i<=n;i++){
            this.push(i)
        }
        let helper=this.head
        let current=this.head
        while(helper.next!=this.head){
            helper=helper.next
        }
        // console.log(helper)
        while(this.count>15){
            for(var i=1;i<k-1;i++){
                current=current.next
                helper=helper.next
            }

            helper.next=current.next;
            current.next.perv = helper;
            if(current.element === n){
                this.tail = helper;
            }
            current=current.next;
            
            this.count--
        }
       
    }
}
let a= new CircleList()
// a.push(1)
// a.push(2)
// a.push(3)
a.ysfCircle(30,9)
console.log(a)

